This disclosure relates generally to the field of computer software. More particularly, but not by way of limitation, it relates to a method of allowing changes to an object-oriented data model that allows older versions of the model to co-exist with newer versions of the model, such that both existing applications and new ones may continue to operate seamlessly without any changes or disruption.
Today applications often store business information in repositories in an object-oriented fashion. Typically, well-defined schemas or models describe how the data may be stored and accessed. In general, the model describes the various classes, the class hierarchy and how the classes can be associated. Applications rely on the information in the model to perform operations on the data stored in the repository.
Situations may arise that may warrant changes to a model. The changes might be related to changing a class definition, deleting a class, introducing a new class, etc. Such changes to the model are often very disruptive to existing consuming applications. In such scenarios, the existing and already functioning applications that were working well before typically stop working and have to be suitably updated or patched before they may continue to work.
One such repository is a Configuration Management Database (CMDB) that uses an object-oriented model called the Common Data Model (CDM). As new technologies emerge and standards evolve, the CDM has to be updated to keep up with the changes. In the past, there have been instances where changes were made to the CDM that compromised backward compatibility. Such incompatible changes have been disruptive to both consumers and providers of the CMDB. Typically, different applications interact with the CMDB for various reasons and those applications must be patched after making changes to the CDM. What is needed is a mechanism that would facilitate changes to the data model without breaking the consuming applications. In other words, the mechanism should allow the old model to co-exist with the newly updated model, such that both existing applications and new ones may continue to operate seamlessly without any changes or disruption.